package com.jh.netty.opaqueopacimeter;

public class RadixUtil {

    /**
     * 8位16进制 转 float
     * 四个字节
     * @param src  "00 00 00 00"
     * @return float
     */
    public static float hex2Float(String src) {
        String a7H = src.substring(0, 4);
        String a7L = src.substring(4, 8);
        return Float.intBitsToFloat(Integer.parseInt(a7L + a7H, 16));
    }

    /**
     * 16进制字符串转字节数组
     * @param src 16进制字符串
     * @return 字节数组
     */
    public static byte[] hexString2Bytes(String src) {
        int l = src.length() / 2;
        byte[] ret = new byte[l];
        for (int i = 0; i < l; i++) {
//            ret[i] = Byte.valueOf(src.substring(i * 2, i * 2 + 2), 16);
            ret[i] = Integer.valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue();
        }
        return ret;
    }

    public static byte[] hex2Bytes(CharSequence src) {
        int l = src.length() / 2;
        byte[] ret = new byte[l];
        for (int i = 0; i < l; i++) {
//            ret[i] = Byte.valueOf(src.substring(i * 2, i * 2 + 2), 16);
            ret[i] = Integer.valueOf(src.subSequence(i * 2, i * 2 + 2).toString(), 16).byteValue();
        }
        return ret;
    }

    /**
     * 翻转16位的高八位和低八位字节
     *
     * @param src 翻转数字
     * @return 翻转结果
     */
    private static int revert(int src) {
        int lowByte = (src & 0xFF00) >> 8;
        int highByte = (src & 0x00FF) << 8;
        return lowByte | highByte;
//        return highByte | lowByte;
    }
}
